////////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Items/SmartPointer.h"
#include "Items/StructDescriptionField.h"
#include "Items/StructDescription.h"

using namespace std;
using namespace dxcodegen::Items;

////////////////////////////////////////////////////////////////////////////////

StructDescription::StructDescription()
{
}

////////////////////////////////////////////////////////////////////////////////

StructDescription::~StructDescription()
{
}

////////////////////////////////////////////////////////////////////////////////

void StructDescription::SetName(const string& name)
{
  m_name = name;
}

////////////////////////////////////////////////////////////////////////////////

string& StructDescription::GetName()
{
  return m_name;
}

////////////////////////////////////////////////////////////////////////////////

void StructDescription::AddField(const StructDescriptionFieldPtr field)
{
  pair<map<string, string>::iterator, bool> ins_res;
  ins_res = m_mapFields.insert(pair<string, string>(field->GetName(), field->GetName()));
  if (ins_res.second)
  {
    m_lstFields.push_back(field);
  }
}

////////////////////////////////////////////////////////////////////////////////

unsigned int StructDescription::GetFieldCount()
{
  return (unsigned int) m_lstFields.size();
}

////////////////////////////////////////////////////////////////////////////////

StructDescriptionFieldPtr StructDescription::GetField(unsigned int position)
{
  return m_lstFields[position];
}

////////////////////////////////////////////////////////////////////////////////
